﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

namespace RzCorportativo.Views.Administrativo
{
    [Lib.Permissao(HasValidation = true)]
    public partial class Grupos : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
                return;
            this.Grupo.Attributes.Add("url", this.ResolveUrl("~/Views/Administrativo/Coordenador.aspx/ListarGrupo"));
            List<Lib.Grupo> grupos = Lib.Grupo.Listar(new Lib.Grupo() {  });
            foreach (var grupo in grupos)
            {
                var row = new System.Web.UI.HtmlControls.HtmlTableRow();

                row.Cells.Add(new System.Web.UI.HtmlControls.HtmlTableCell()
                {
                    InnerText = grupo.Descricao
                });

                row.Cells.Add(new System.Web.UI.HtmlControls.HtmlTableCell()
                {
                    InnerHtml = "<div class='btn-group' data-toggle='buttons-radio'><input type='button' value='editar' class='btn ' onclick='Editar(" + grupo.GrupoId + ")' />" +
                                            "<input type='button' value='remover' class='btn btn-danger' onclick='RemoveGrupo(" + grupo.GrupoId + ")' /></div>"
                });
                row.Attributes.Add("grupo", grupo.GrupoId.ToString());
                gridGrupo.Rows.Add(row);
            }
        }

        [WebMethod]
        public static object AddGrupo(Lib.Grupo grupo)
        {
            try
            {
                if (grupo == null)
                    throw new Exception("O objeto fornecido não pode ser nulo");

                string erros = string.Empty;

                if (!BasePage.IsAuthenticate)
                    erros += "Sua sessão está expirada, favor logar-se novamente";
                if (grupo.GrupoId.Equals(-1))
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Código do grupo inválido";
                if (string.IsNullOrEmpty(grupo.Descricao))
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Descrição do grupo inválida";
                if ((AppSession.Login.Usuario ?? new Lib.Usuario()).UsuarioId == 0)
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Usuário inválido, favor fazer login novamente";
                if (erros.Length > 0)
                    return new
                    {
                        AlertType = 1,
                        Messages = erros.Split(';'),
                        Show = true,
                        Value = 0
                    };
                grupo.Ativo = true;
                if (grupo.Salvar())
                {
                    return new
                    {
                        AlertType = 0,
                        Messages = new string[] { "Item salvo com sucesso!" },
                        Show = true,
                        Value = grupo.GrupoId
                    };
                }
                else
                {
                    return new
                    {
                        AlertType = 1,
                        Messages = new string[] { "Desculpe isto é vergonhoso", "Não foi possível salvar esta configuração, tente mais tarde!" },
                        Show = true,
                        Value = 0
                    };
                }
            }
            catch (Exception ex)
            {
                return new
                {
                    AlertType = 1,
                    Messages = new string[] { ex.Message },
                    Show = true,
                    Value = 0
                };
            }
        }

        [WebMethod]
        public static object RemoveGrupo(Lib.Grupo grupo)
        {
            try
            {
                if (grupo == null)
                    throw new Exception("O objeto fornecido não pode ser nulo");

                string erros = string.Empty;

                if (!BasePage.IsAuthenticate)
                    erros += "Sua sessão está expirada, favor logar-se novamente";
                if (grupo.GrupoId.Equals(-1))
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Código do grupo inválido";
                if ((AppSession.Login.Usuario ?? new Lib.Usuario()).UsuarioId == 0)
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Usuário inválido, favor fazer login novamente";
                if (erros.Length > 0)
                    return new
                    {
                        AlertType = 1,
                        Messages = erros.Split(';'),
                        Show = true,
                        Value = 0
                    };

                if (grupo.Excluir())
                {
                    return new
                    {
                        AlertType = 0,
                        Messages = new string[] { "Item excluido com sucesso!" },
                        Show = true,
                        Value = grupo.GrupoId
                    };
                }
                else
                {
                    return new
                    {
                        AlertType = 1,
                        Messages = new string[] { "Desculpe isto é vergonhoso", "Não foi possível excluir esta configuração, tente mais tarde!" },
                        Show = true,
                        Value = 0
                    };
                }
            }
            catch (Exception ex)
            {
                return new
                {
                    AlertType = 1,
                    Messages = new string[] { ex.Message },
                    Show = true,
                    Value = 0
                };
            }
        }
    }
}